#include "btform.h"
#include "ui_btform.h"

BtForm::BtForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::BtForm)
{
    ui->setupUi(this);

    ui->LineBox->hide();// 默认无动画

    // 设置line1的动画效果
    line1Animal = new QPropertyAnimation(ui->line1,"geometry",this);// 参数1：动画作用在哪个对象上；参数2：以什么方式动画；参数3：绑定父窗体，不用手动析构
    line1Animal->setDuration(1500);                                 // 设置动画持续时间
    // 定义关键帧：参数1：时间占比：0对应动画起始状态，0.5对应动画中间状态，1对应动画结束状态
    // 参数2：在该时间节点的属性值 QRect(x, y, width, height)x,y代表控件在父窗体的坐标（以左上角为原点）
    line1Animal->setKeyValueAt(0,QRect(2,30,2,0));                  // 起始状态
    line1Animal->setKeyValueAt(0.5,QRect(2,5,2,25));                // 中间状态
    line1Animal->setKeyValueAt(1,QRect(2,30,2,0));                  // 结束状态
    line1Animal->setLoopCount(-1);                                  // 循环次数
    line1Animal->start();                                           // 启动动画

    // 设置line2的动画效果
    line2Animal = new QPropertyAnimation(ui->line2,"geometry",this);
    line2Animal->setDuration(1700);
    line2Animal->setKeyValueAt(0,QRect(11,30,2,0));
    line2Animal->setKeyValueAt(0.5,QRect(11,5,2,25));
    line2Animal->setKeyValueAt(1,QRect(11,30,2,0));
    line2Animal->setLoopCount(-1);
    line2Animal->start();

    // 设置line3的动画效果
    line3Animal = new QPropertyAnimation(ui->line3,"geometry",this);
    line3Animal->setDuration(1900);
    line3Animal->setKeyValueAt(0,QRect(20,30,2,0));
    line3Animal->setKeyValueAt(0.5,QRect(20,5,2,25));
    line3Animal->setKeyValueAt(1,QRect(20,30,2,0));
    line3Animal->setLoopCount(-1);
    line3Animal->start();


    // 设置line4的动画效果
    line4Animal = new QPropertyAnimation(ui->line4,"geometry",this);
    line4Animal->setDuration(2100);
    line4Animal->setKeyValueAt(0,QRect(29,30,2,0));
    line4Animal->setKeyValueAt(0.5,QRect(29,5,2,25));
    line4Animal->setKeyValueAt(1,QRect(29,30,2,0));
    line4Animal->setLoopCount(-1);
    line4Animal->start();
}

BtForm::~BtForm()
{
    delete ui;
}

void BtForm::setIconAndText(const QString &btIcon, const QString &btText,int pageId)
{
    ui->btIcon->setPixmap(QPixmap(btIcon)); // 设置图标
    ui->btText->setText(btText);            // 设置文本
    this->pageId = pageId;                  // 将按钮id存储（实现按钮与page页面关联效果）
}

int BtForm::getPageId() const   // 获取当前BtForm的pageId
{
    return this->pageId;
}

void BtForm::clearBackground()  // 清除当前BtForm的背景色
{
    ui->btStyle->setStyleSheet("#btStyle:hover{background-color:#D8D8D8;}");
}

void BtForm::hideAnimal()
{
    ui->LineBox->hide();
}

void BtForm::showAnimal()
{
    ui->LineBox->show();
}

void BtForm::mousePressEvent(QMouseEvent *event)
{
    // 1、当按钮按下后，修改背景颜色
    ui->btStyle->setStyleSheet("#btStyle{background-color:rgb(30,206,154);}");
    // 1、当按钮按下后，切换RightBody中的page页面
    emit btClick(pageId);
}
